/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */

/**
 * 利便的なクラスや関数や型を集めたクラス。
 *
 * @author		iZE Co., Ltd.<br>
 * @version		$Id$<br>
 */
package jp.ize.ux.utils;

// {{{ class Assoc<A, B>
/**
 * Assocクラス<br>
 * 連想構造クラスです。
 */
class Assoc<A, B>
{
	// {{{ properties

	var k : A;
	var v : B;

	// }}}
	// {{{ public function new( key : A, value : B )
	/**
	 * 連想構造のコンストラクタです。
	 */
	public function new( key : A, value : B )
	{
		k = key;
		v = value;
	}
	// }}}
	// {{{ public function key() : A
	/**
	 * キーを取り出す関数です。
	 */
	public function key() : A
	{
		return k;
	}
	// }}}
	// {{{ public function value() : B
	/**
	 * 値を取り出す関数です。
	 */
	public function value() : B
	{
		return v;
	}
	// }}}
}
// }}}
// {{{ class Pair<A, B>
/**
 * Pairクラス<br>
 * 2つのオブジェクトのペアを持つクラスです。
 */
class Pair<A, B>
{
	// {{{ properties

	var l : A;
	var r : B;

	// }}}
	// {{{ public function new( left : A, right : B )
	/**
	 * コンストラクタです。
	 */
	public function new( left : A, right : B )
	{
		l = left;
		r = right;
	}
	// }}}
	// {{{ public function left() : A
	/**
	 * 左側の値を取り出す射影関数です。
	 */
	public function left() : A
	{
		return l;
	}
	// }}}
	// {{{ public function right() : B
	/**
	 * 右側の値を取り出す射影関数です。
	 */
	public function right() : B
	{
		return r;
	}
	// }}}
}
// }}}
